#ifndef SCENE_H
#define SCENE_H

#include <vector>
#include "camera.h"
#include "cgcolor.h"

class ICgObject;
class ILightSource;

class Scene
{
public:
    Scene();

    void addObject(ICgObject *obj);
    void addLightSource(ILightSource *light_source);
    void setCamera(const Camera &camera);
    Camera camera() const;
    std::vector<ICgObject*> objects() const;
    std::vector<ILightSource*> light_sources() const;
    void set_background_color(CgColor bgcolor);
    CgColor background_color() const;
    Scene* clone() const;
    void set_ambient(CgColor ambient);
    CgColor ambient() const;
    void opengl_setup_ambient_light() const;

private:
    std::vector<ICgObject*> objects_;
    std::vector<ILightSource*> light_sources_;
    Camera camera_;
    CgColor bgcolor_;
    CgColor ambient_;
};

#endif // SCENE_H
